﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int n;
    while (cin >> n)
    {
        string str1;
        string str2;
        cin >> str1 >> str2;
        string strs;
        int left = -1, right = -1;
        int result = 1000000;
        for (int i = 0; i < n; ++i)
        {
            cin >> strs;
            if (strs == str1)
                left = i;
            if (strs == str2)
                right = i;
            if (left != -1 && right != -1)
                result = min(result, abs(right - left));//注意要用abs，因为str1晚出现于str2，left将大于right，结果会小于0
        }
        if (left != -1 && right != -1)
            cout << result << endl;
        else
            cout << -1 << endl;
    }
}

/*
述
给定一个字符串数组strs，再给定两个字符串str1和str2，返回在strs中str1和str2的最小距离，
如果str1或str2为null，或不在strs中，返回-1。
输入描述：
输入包含有多行，第一输入一个整数n（1≤n≤105），代表数组strs的长度，第二行有两个字符串分别代表str1和str2，
接下来n行，每行一个字符串，代表数组strs (保证题目中出现的所有字符串长度均小于等于10)。
输出描述：
输出一行，包含一个整数，代表返回的值。

示例1
输入：
1
CD AB
CD

输出：
-1
*/

